Flowcharts are widely used in fields of analyzing business flow, designing computer program, developing and managing data processing system, etc. As well known, a flowchart is a formalized graphic representation of a program logic sequence, work process, organization structure, etc. Traditional flowchart comprises a set of simple geometric symbols representing the beginning or end of a process, intermediate steps, decisions, I/O processes and directional lines connecting these symbols. The meanings of these geometric symbols have been clearly defined in industrial standards, such as ANSIx3.5, ISO 5807:1985, etc. FIG. 1 shows several common geometric symbols and their meanings in traditional flowchart.
At present, there are many computer software or hardware tools for designing, editing a flowchart, e.g., Holosofx™, Rational Rose™, CA™ process modeler, Sybase™ Power Designer, Enterprise Architect, etc. These tools can help business executives, business analyzers and commercial consultants get familiar with business flow, analyze business flow, and can also help system analyzers or program designers in designing and editing various flowcharts, some of these tools can generate various project documents or even source program code automatically. Due to the use of these tools, it has dramatically reduced system analyzer or program designer's workload.
However, for existing tools (technology) of designing and editing a flowchart, once finished flowchart design, it's hard to make modification or reorganization.
Consider the following scenarios. FIG. 2A is a simple illustrative flowchart edited by Rational Rose™. As shown in FIG. 2A, activities 2 and 3 are performed in parallel with activities 4 and 5. If we want to modify the execution mode of the four activities from parallel to sequential, as shown in FIG. 2B, then you need to perform following six operations: 1) delete the first synchronization bar; 2) delete the second synchronization bar; 3) add a flow from Activity 1 to Activity 2; 4) add a flow from Activity 3 to Activity 4; 5) add a flow from Activity 5 to Activity 6; 6) re-layout all of these graphic symbols.
If we want to change the synchronization (parallel) logic in FIG. 2A to decision logic, as shown in FIG. 2C, then we need to perform following nine operations: 1) delete the first synchronization bar; 2) delete the second synchronization bar; 3) add a condition box at the place of the first synchronization bar; 4) add a flow from Activity 1 to the condition box; 5) add a flow from the condition box to Activity 2; 6) add a flow from the condition box to Activity 4; 7) add a flow from Activity 3 to Activity 6; 8) add a flow from Activity 5 to Activity 6; 9) re-layout all of these graphic symbols.
Further, if we want to move Activity 3 in FIG. 2A to a place after synchronization (parallel) logic, as shown in FIG. 2D, then we need to perform following five operations: 1) reconnect the control flow between Activity 3 and the second synchronization bar to point to Activity 6; 2) reconnect the control flow between Activity 2 and Activity 3 from the second synchronization bar to Activity 3; 3) delete the control flow between the second synchronization bar and Activity 6; 4) add a control flow from Activity 2 to the second synchronization bar; 5) re-layout all of these graphic symbols. From the above examples we can see that it's very inconvenient to modify a flowchart using prior flowchart editing techniques, especially for complex flowcharts and when the flowcharts need to be changed often. For this reason, system analyzer and program designers waste a great deal of time and energy in those trivial editing operations.